// 自动化构建 功能文件

// 引入模块
const gulp = require('gulp')
const connect = require("gulp-connect")
const sass = require("gulp-sass")(require("sass"))
const concat = require("gulp-concat")
const uglify = require("gulp-uglify")
const rename = require("gulp-rename")
const babel = require('gulp-babel')

// 参数一：任务名称
// 参数二: 任务功能

// 创建服务器任务
gulp.task("server", done => {
  connect.server({
    root: "dist", //服务器对应的目录是dist
    // 设置自动刷新  
    livereload: true
  })
  done();
})

//  建任务
//拷贝一个文件

gulp.task("copyHtml", done => {
  gulp.src("./html/**").pipe(gulp.dest("dist/html")).pipe(connect.reload());
  done();
});
gulp.task("copyJs", done => {
  gulp.src("./js/**").pipe(gulp.dest("dist/js")).pipe(connect.reload());
  done();
})

gulp.task("copyImages", done => {
  gulp.src("./images/**").pipe(gulp.dest("dist/images")).pipe(connect.reload());
  done();
})

//sass转css的的任务
gulp.task('copySass', done => {
  gulp.src('./sass/**').pipe(sass()).pipe(gulp.dest('dist/css')).pipe(connect.reload());
  done();
})

//font
gulp.task("copyFont", done => {
  gulp.src("./font/**").pipe(gulp.dest("dist/font")).pipe(connect.reload());
  done();
})


// 合并文件任务 ,然后压缩文件
// gulp.task('concat', done => {
//   gulp.src(["./js/concat1.js", './js/concat2.js'])//选择需要合并的文件
//     .pipe(concat('concat.js')) //定义合并后的文件名
//     .pipe(gulp.dest('dest/js'))
//     .pipe(uglify())
//     .pipe(rename('concat.min.js'))
//     .pipe(gulp.dest('dist/js')) //定义合并后的文件路径
//   done();
// })

//ES+转ES5
// gulp.task("babel", done => {
//   gulp.src("./js/*.js") //取到js文件夹下的所有js
//     .pipe(babel({
//       presets: ['@babel/preset-env']
//     }))
//     .pipe(gulp.dest('./dist/js'))
//   done();
// })


//监听
//监听文件变化 一旦指定文件发安生变化，会触发对应的任务执行
gulp.task("watch", done => {
  gulp.watch("./html/**", gulp.series("copyHtml"));
  done();
  gulp.watch("./images/**", gulp.series("copyImages"));
  done();
  gulp.watch("./js/**", gulp.series("copyJs"));
  done();
  gulp.watch("./sass/**", gulp.series("copySass"));
  done();
  gulp.watch("./font/**", gulp.series("copyFont"));
  done();
});



// 同时开启监听和服务器
// gulp.task("build", gulp.parallel("copyHtml", "copyImages"))
gulp.task("default", gulp.series("server", "watch"))